#pragma once

#include<vector>
#include<string>
#include<iostream>

template<typename T>
inline void printContainer(const T& container)
{
    for(const auto& elem:container)
    {
        std::cout<<elem<<std::endl;
    }
}

template<typename T>
inline void printContainerPair(const T& container)
{
    for(const auto& elem:container) // pair
    {
        std::cout<<elem.first <<" "<<elem.second<<std::endl;
    }
}

template<class T>
inline void printContainerOptional(const T& container)
{
    for(const auto& elem:container)
    {
        // 此处预期elem是一个optional的类型，打印之前先判断一下，看能否有效
        if(elem)
        {
            std::cout<<elem.value()<<std::endl;
        }
        else
        {
            std::cout<<"元素无效"<<std::endl;
        }
    }
}